import iterator.MyIterator;
import list.MyList;
import list.impl.MyArrayList;
import list.impl.MyLinkedList;

import java.util.ArrayList;

/**
 * 迭代器Iterator
 * 说白了就是提供一个遍历集合的方式，让使用者无需关心该集合的内部信息
 * 无论是链表，还是数组，还是树，都可以使用迭代器来遍历，并且不需要知道遍历的方式
 */

public class Main {
    public static void main(String[] args) {
        // 这里采用自定义封装的List做样例，因为看源码有点麻烦
        MyList<String> arrayList = new MyArrayList<String>();
        arrayList.add("QWERTY");
        arrayList.add("ASDFGHJ");
        arrayList.add("ZXCVBNM");
        forEachPrint(arrayList.iterator());
        MyList<String> linkedList = new MyLinkedList<String>();
        linkedList.add("QWERTY");
        linkedList.add("ASDFGHJ");
        linkedList.add("ZXCVBNM");
        forEachPrint(linkedList.iterator());
    }

    public static void forEachPrint(MyIterator it) {
        StringBuilder sb = new StringBuilder();
        sb.append(it.getClass()).append(": [");
        while (it.hasNext()) {
            Object next = it.next();
            sb.append(next).append(',');
        }
        sb.append(']');
        System.out.println(sb.toString());
    }
}